Skip to main content

Docker 專案部署與版本管理正確指南

前言

Docker 不僅只是啟動容器,正確的部署與版本管理流程能夠確保資料不遺失,系統保持清潔,操作效率最大化。本指南將針對常見的誤解提供更正確的概念與流程。


1. Docker 基礎概念正確理解

  • 容器(Container)是非持久化的:容器本身會隨著 docker-compose down 而被刪除
  • 數據卷(Volume)是持久化的:即使容器被刪除,掛載的卷中的資料依然保存
  • 程式代碼修改,需要在服務器上獲取新代碼,重新構建容器,數據庫資料通常保存在卷中,不會受影響

2. Docker指令正確理解

  • docker-compose down:停止並移除容器和網絡,但保留卷(資料)
  • docker-compose down -v:停止並移除容器、網絡及卷(會導致資料遺失)
  • docker-compose stop:僅停止容器運行,不移除容器
  • docker-compose up -d:創建並啟動容器,設為背景運行
  • docker-compose up -d --build:重新構建鏡像,並創建啟動容器

3. 正確的部署流程

本地開發環境:

  1. 進行代碼修改與測試
  2. 測試完成後提交代碼:
    git commit -m "描述修改內容"
    git push

服務器部署環境:

  1. SSH登入服務器
  2. 進入專案目錄
  3. 執行部署流程:
    docker-compose down    # 停止並移除當前容器
    git pull # 拉取最新代碼
    docker-compose up -d --build # 使用新代碼構建並啟動容器

4. 常見誤解與正確理解

  • 誤解:每次部署都要清空數據庫

    • 正確:只要不使用 -v 參數刪除卷,數據會自動保留
  • 誤解:docker-compose down 只是停止容器

    • 正確:此命令會移除容器,如果只想停止不刪除,應使用 docker-compose stop
  • 誤解:在同一台機器上進行代碼提交又拉取

    • 正確:通常本地開發機提交代碼,服務器拉取代碼
  • 注意:使用 docker-compose down -v 會刪除所有卷中的資料,僅適用於需要完全重置的場景


5. 結論

正確理解Docker的容器和卷的概念,按照合理的部署流程操作,能夠確保系統高效運行,同時保證資料安全不遺失。記住,容器是臨時的,而數據卷是持久的,這是Docker部署的核心概念。